projection should preserve scalar and object subtree semantics